// pages/i/pay-qrcode.js
const auth = require('../../utils/auth.js')
const UserService = require('../../services/user.js')
import drawQrcode from 'weapp-qrcode';

Page({

    /**
     * 页面的初始数据
     */
    data: {
        timeData: {},
        qrcodeId: 0,
        first:true,
        code: null,
        time: null,
        expiredAtTxt: null,
        isLoggedIn: false,
        userInfo: null,
        loginReady: false, // 登录是否准备完成
        payResult: null,
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        this.checkLoginStatus()

        wx.setVisualEffectOnCapture({
            visualEffect: 'hidden'
          });
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {
        
    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        // 页面显示时检查登录状态
        if (this.data.loginReady == false) {
            this.checkLoginStatus();
        }
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },

    /**
       * 检查登录状态
       */
    async checkLoginStatus() {
        try {
            const loginStatus = await auth.checkLoginStatus()
            console.log(loginStatus)
            this.setData({
                isLoggedIn: loginStatus.isLoggedIn,
                userInfo: loginStatus.userInfo,
                loginReady: true
            })

            if (loginStatus.isLoggedIn) {
                // 加载用户信息
                this.doGenerateQrcode();
            }
        } catch (error) {
            this.setData({
                isLoggedIn: false,
                userInfo: null,
                loginReady: true
            })
        }
    },
    /**
     * 自动登录完成回调
     * 由app.js调用
     */
    onAutoLoginComplete(isLoggedIn, userInfo) {
        this.setData({
            isLoggedIn: isLoggedIn,
            userInfo: userInfo,
            loginReady: true
        });

        if (isLoggedIn) {
            //this.generateQrcode(userInfo.id, 'payQrcode');
        }
    },

    reset() {
        const countDown = this.selectComponent('.control-count-down');
        
        countDown.reset();
      },

    async doGenerateQrcode() {
        const result = await UserService.generateQrcodeRecord({
            showLoading: true,
            needAuth: true,
        });
        if (result.success) {
            this.setData({
                qrcodeId: result.data.qrcode_id,
                code: result.data.code,
                time: result.data.time,
                expiredAtTxt: result.data.expired_at_txt,
                payResult: null
            }, function () {
                
                this.generateQrcode(this.data.qrcodeId, 'payQrcode');
            })
        }
    },

    

    generateQrcode(text, canvasId) {
        const ops = {
            width: 160,
            height: 160,
            canvasId: canvasId,
            text: "http://ruian-store.nai8.me/v1/user/qrcode?id=" + text,
        };

        drawQrcode(ops).then(() => {
            console.log('二维码生成成功');
        }).catch((err) => {
            console.error('二维码生成失败:', err);
        });
    },

    onFinish() {
        
        this.reset();
        this.doGenerateQrcode()
        
    },

    onChange(e) {
        
        this.setData({
            timeData: e.detail,
        },function(){
            // 每隔3秒执行一次查询支付码状态
            if (e.detail && typeof e.detail.seconds === 'number' && e.detail.seconds % 3 === 0) {
                // 查询支付码状态
                UserService.checkBizUsePayQrcodeResult({
                    pay_qrcode_record_id: this.data.qrcodeId
                }).then(res => {
                    this.setData({
                        payResult: res.message
                    })
                })
            }
        });
    }

})